Computing systems have achieved widespread acceptance as a means for creating and manipulating a wide variety of types of documents. For instance, users routinely create word processing documents, drawing documents, spreadsheet documents, database documents, and the like. Even among word processing documents there may be various types. For instance, some word processing applications may be designed to provide rich formatting and page layout functionality, such as a desktop publishing application. Other word processing applications may be designed as simple text editors. Still other word processors may be designed as tools for organizing textual data or notes into useful information.
One of the problems facing many software designers is the consumer's desire to share information between various of these types of applications. In many cases, sharing the information is a relatively simple matter. For instance, copying data from one application into another application that shares similar functionality does not require extensive transformation of the data to support the transaction. However, in other circumstances, sharing data between one application and another application that has fundamentally different features poses a problem for the designers. For instance, data from a word processing application cannot easily be copied and pasted into a database application because a database application maintains its data in a fundamentally different way than a word processing application. In many of these situations, it may be relatively easy to simply share data, but very difficult to share the data in a meaningful way. However, striving for data compatibility between a source application and a target application continues to be a goal of most software designers.